home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 40
/
Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso
/
Aminet
/
misc
/
emu
/
ATUtilities.lha
/
ATUtilities
/
ASM
/
JOY.ASM
< prev
next >
Wrap
Assembly Source File
|
2000-09-26
|
5KB
|
237 lines
code segment
assume cs:code,ds:code
org 0
jIntNum equ 28
befehl equ 2
status equ 3
end_adr equ 14
cmd equ 16384
arg1 equ cmd+0
arg2 equ cmd+2
arg3 equ cmd+4
arg4 equ cmd+6
arg5 equ cmd+8
buf_seg equ 22
erst_b equ this byte
treiber:
dw -1,-1 ; DOS-Intern
db 0,80h ; Flags
soffset dw offset strat ; Strategie-Routine
ioffset dw offset intr ; Interrupt-Routine
db "$JOY0000" ; Kennung
janus_seg dw (?)
janus_ofs dw (?)
db_ptr dw (?),(?)
old_int equ this dword
old_int_ofs dw 0
old_int_seg dw 0
dummy proc far
ret
dummy endp
; ************ Joystick-Interrupt fr Vektor $15
new_int proc far
cmp ah,84h
jne jump
cmp dx,0
jne richtung
feuer:
pushf
call [cs:old_int]
push es
push di
mov es,cs:janus_seg
mov di,cs:janus_ofs
mov es:w[di+arg1],2
mov es:w[di+arg2],ax
call near call_and_wait
mov ax,es:w[di+arg2]
pop di
pop es
iret
richtung:
pushf
call [cs:old_int]
push es
push di
mov es,cs:janus_seg
mov di,cs:janus_ofs
mov es:w[di+arg1],1
mov es:w[di+arg2],ax
mov es:w[di+arg3],bx
mov es:w[di+arg4],cx
mov es:w[di+arg5],dx
call near call_and_wait
mov ax,es:w[di+arg2]
mov bx,es:w[di+arg3]
mov cx,es:w[di+arg4]
mov dx,es:w[di+arg5]
pop di
pop es
iret
jump:
jmp [cs:old_int]
new_int endp
call_and_wait proc near
mov ah,7
mov al,jIntNum
int 0b
mov ah,8
mov al,jIntNum
int 0b
ret
call_and_wait endp
ende equ this byte
; ------------ Ende des Treiberprogramms ------------
; ************ Interruptroutine des Treibers
strat proc far
mov cs:db_ptr,bx
mov cs:db_ptr+2,es
ret
strat endp
intr proc far
pusha
push cs
pop ds
les di,dword ptr db_ptr
mov bl,es:[di+befehl]
cmp bl,0
je bc_okay
mov ax,8003h
jmp short intr_end
bc_okay:
call init
intr_end label near
or ax,0100h
mov es:[di+status],ax
popa
ret
intr endp
init proc near
mov dx,offset initm
mov ah,9
int 21h
push es
push di
mov ah,1
mov al,jIntNum
int 0b
mov ax,di
mov janus_ofs,di
mov janus_seg,es:w[buf_seg]
pop di
pop es
cmp ax,-1
jne janus_okay
mov dx,offset kserv
mov ah,9
int 21h
mov word ptr es:[di+end_adr],offset treiber
mov word ptr es:[di+end_adr+2],cs
jmp near init_ende
janus_okay:
push cs
pop ds
mov word ptr es:[di+end_adr],offset ende
mov word ptr es:[di+end_adr+2],cs
mov ioffset,offset dummy
mov soffset,offset dummy
mov es,cs:janus_seg
mov di,cs:janus_ofs
mov es:w[di+arg1],3
call near call_and_wait
mov ah,35h
mov al,15h
int 21h
mov old_int_ofs,bx
mov old_int_seg,es
mov ah,25h
mov al,15h
mov dx,offset new_int
int 21h
mov dx,offset sokay
mov ah,9
int 21h
init_ende:
xor ax,ax
ret
init endp
exe_start proc far
push cs
pop ds
mov ah,9
mov dx,offset infot
int 21h
mov ax,4c00
int 21h
exe_start endp
; ************ Installationsmeldungen beim Start
initm db "ATUtilities Joystick-Manager - Version 2.0 17. September 1993",13,10
db "Copyright (C) 1993 by Thomas Dreibholz. All rights reserved.",13,10,"$"
sokay db "Treiber wurde erfolgreich installiert.",13,10,10,"$"
kserv db "Amiga-Treiber an Janus-Interrupt 28 ist nicht aktiv.",13,10
db "Bitte berprfen Sie die Installation der ATUtilities.",13,10
db "Treiber konnte nicht installiert werden.",13,10,10,"$"
infot db "ATUtilities Joystick-Manager:",13,10
db "Dieses Programm ist ein Treiberprogramm und kann deshalb nicht direkt ausge-",13,10
db "fhrt werden. Um den Treiber zu installieren, muá folgende Zeile in die",13,10
db "CONFIG.SYS eingefgt werden:",13,10,10
db "DEVICE=Lw:\Verz\JOY.EXE",13,10,10
db "Nach dem nchsten Reset steht der Joystick-Manager zur Verfgung. Beim Ein-",13,10
db "binden des Programms durch die CONFIG.SYS muá auf dem Amiga das Programm",13,10
db "Joystick-Manager aktiv sein.",13,10
db "JOY.EXE fngt alle Aufrufe fr die",13,10
db "Joystick-Funktionen des Interrupt 15h ab und leitet sie auf dem Amiga",13,10
db "um. Alle Programme, deren Abfrage ber diese Funktionen luft, knnen",13,10
db "nun dem Joystick im rechten Amiga-Port nutzen.",13,10,10
db "17. 09. 1993 - Version 2.0 Copyright (C) 1993 by Thomas Dreibholz",13,10,10,"$"
code ends
end exe_start